# 开发时间: 2024/1/9 16:16

class Student:  # Student为类的名称，建议首字母大写，更加规范
    native_pace='吉林'        # 直接写在类里的变量称为类属性

    # 初始化方法
    def __init__(self, name='None', age=-1):
        self.name=name  # self.name 称为实体属性，进行了一个赋值的操作，将局部变量的name值赋给了实体属性
        self.age=age    # 实体属性的名字可以随便取，但是习惯上实体属性和局部变量的名字是相同的

    # 实例方法
    def eat(self):      # 默认有一个参数是self
        print('学生在吃饭')

    # 静态方法
    @staticmethod
    def method():       # 静态方法是没有参数self的
        print('我使用了staticmethod修饰，我是静态方法')

    # 类方法
    @classmethod
    def cm(cls):
        print('我使用了classmethod进行修饰，我是类方法')

"""
stu1=Student('张三', 20)
print(id(stu1))
print(type(stu1))
print(stu1)     # 实际上输出的是16进制格式的stu1的内存地址
"""

"""
# 访问类
print(stu1.name)
print(stu1.age)
# 调用类中的方法
stu1.eat()
Student.eat(stu1)   # 也可以这样调用
"""

"""
# 在类之外定义的叫函数，在类之内定义的叫方法
def drink():    # 函数
    print('喝水')
"""

# 类属性的使用
print(Student.native_pace)
stu1=Student('张三', 20)
stu2=Student('李四', 30)
print(stu1.native_pace)
print(stu2.native_pace)

# 类方法的使用方式
Student.cm()
stu1.cm()
# 静态方法的使用
Student.method()
stu1.method()
